¿Cómo puedo implementar una condición usando operadores booleanos and or usando firestore?
Un ejemplo de lo que quiero hacer:
this.itemsCollection = this.afs.collection<Message>('messages', ref => { let query: firebase.default.firestore.CollectionReference | firebase.default.firestore.Query = ref; query = ((query.where('senderId', '==', this._cs.senderId || '') && query.where('receiverId', '==', this.receiverId || '')) || (query.where('receiverId', '==', this._cs.senderId || '') && query.where('senderId', '==', this.receiverId || ''))) return query; }) this.items = this.itemsCollection.valueChanges();No hay opción para hacer un OR en diferentes campos en Firestore. Tendrá que ejecutar múltiples consultas para esto y luego fusionar los resultados en el código de su aplicación.
Verificar un OR para múltiples valores en un solo campo se denomina in condición en Firestore y se puede hacer con:
query.where('senderId', 'in', [this._cs.senderId, '']) La cadena vacía aquí debe existir literalmente en el documento para que coincida con la condición. No hay forma de filtrar documentos donde no existe senderId , ya que los documentos sin un valor para ese campo simplemente no existirán en el índice que Firestore creó para senderId .